/*
函数对象的本质是一个类的实例，不是一个普通函数
可以拥有成员变量和成员函数，能够维护自己的状态
*/

#include <iostream>
#include <string>
#include <vector>

using namespace std;
// 定义一个加法函数对象
// class ADD
// {

// public:
// 	int operator()(int a, int b)
// 	{
// 		return a + b;
// 	}
// };

// 定义一个打印函数对象，记录调用次数
class Printer
{
private:
	int count;

public:
	Printer() : count(0) {}
	void operator()(const string &message)
	{
		cout << message << endl;
		count++;
	}

	int getcount() const
	{

		return count;
	}
};

int main(int argc, char const *argv[])
{
	Printer printer;
	printer("你好，世界");
	printer("欢迎学习 C++");
	cout << "打印函数被调用了 " << printer.getcount() << " 次" << endl;
	return 0;
}
